package com.gcb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gcb.common.core.domain.entity.SysDept;
import com.gcb.domain.dto.CompanyListSearchDTO;
import com.gcb.domain.dto.UpdateCompanyStatusDto;
import com.gcb.domain.entity.Company;
import com.gcb.domain.vo.company.CompanyPageListVo;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 企业信息Mapper接口
 *
 * @author seh
 * @date 2024-03-08
 */
@Mapper
@Repository
public interface CompanyMapper extends BaseMapper<Company> {
    /**
     * 查询企业信息
     *
     * @param id 企业信息主键
     * @return 企业信息
     */
    public Company selectCompanyById(Long id);

    /**
     * 查询企业信息列表
     *
     * @param company 企业信息
     * @return 企业信息集合
     */
    public List<Company> selectCompanyList(Company company);

    /**
     * 删除企业信息
     *
     * @param id 企业信息主键
     * @return 结果
     */
    public int deleteCompanyById(Long id);

    /**
     * 批量删除企业信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCompanyByIds(Long[] ids);

    /**
     * 查询企业管理列表
     *
     * @param company 企业信息
     * @return 企业信息集合
     */
    List<CompanyPageListVo> selectCompanyManageList(CompanyListSearchDTO company);

    /**
     * 批量更新企业状态
     * @param dto 参数
     * @return int
     */
    int batchUpdateCompanyStatus(UpdateCompanyStatusDto dto);

    /**
     *  根据企业编号检测企业是否存在
     * @param companyCode 编号
     */
    int selectCompanyByCompanyCode(String companyCode);

    /**
     *  根据企业编号查询企业信息
     * @param companyCode 编号
     */
    Company selectByCompanyCode(String companyCode);

    /**
     *  根据营业执照编号查询企业信息
     * @param businessLicenseNo  营业执照编号
     * @return Company
     */
    Company selectCompanyByLicenseNo(String businessLicenseNo);

    /**
     *  根据水运资质编号查询企业信息
     * @param waterTransportNo 水运资质编号
     * @return Company
     */

    Company selectCompanyByWaterTransportNo(String waterTransportNo);

    /**
     * 查询当前城市的运营商id
     * @param city 城市中文名(不带市 例：厦门)
     * @return deptId(operateId)
     */
    SysDept selectDeptByCity(String city);
}
